package com.sky.orders.mapper;

import com.github.pagehelper.Page;
import com.sky.dto.GoodsSalesDTO;
import com.sky.dto.OrdersPageQueryDTO;
import com.sky.entity.Orders;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 订单管理 mapper
 */
@Mapper
public interface OrderMapper {


    /**
     * 订单 分页-条件查询
     */
    Page<Orders> selectPage(OrdersPageQueryDTO ordersPageQueryDTO);


    /**
     * 根据id查询订单
     */
    Orders getById(@Param("id")Long id);


    /**
     * 统计某状态下的订单数量
     */
    Integer statusCounts(@Param("status")Integer status);


    /**
     * 根据id修改订单
     */
    Integer updateById(Orders orders);


    /**
     * 定时任务  查询订单状态status=1待支付、payStatus=0未支付、下单时间+15min < 当前时间 的订单集合
     */
    List<Orders> getTimeOutOrders(@Param("status")Integer status, @Param("payStatus")Integer payStatus, @Param("orderTimeout")Long orderTimeout);


    /**
     * 定时任务 根据状态status=4派送中，以及下单时间+2h < 当前时间 查询订单集合
     */
    List<Orders> getDeliveryOrders(@Param("status")Integer status, @Param("deliveryTime")Integer deliveryTime);


    /**
     * 查询当天营业总额 (状态已完成)
     */
    BigDecimal selectDayTotalAmountByMap(Map map);


    /**
     * 订单数据统计
     */
    Integer selectOrderStatisticsByMap(Map map);


    /**
     * 热销商品Tp10统计
     */
    List<GoodsSalesDTO> selectSalesTop10Statistics(Map map);
}
